const { STORAGE_KEY_USER_STEP_DATA_MODEL, STORAGE_KEY_USER_INFO } = require('../../constant/storage_keys.js');
const UserInfo = require('../../model/UserInfo.js');
const { checkLoginAndRedirect, clearLoginInfo, autoLogin, isLoggedIn, setAppResumedFromBackground, setUserOnlineStartTime } = require('../../utils/auth.js');

Page({
  data: {
    userName: '',
    userJob: '',
    teamName: '',
    userAvatar: '/assets/avatar.png', // 默认头像
    currentStep: 0, // 今日步数
    weekStep: 0, // 本周步数
    totalStep: 0 // 总步数
  },

  onLoad() {
    // 检查登录状态
    if (!checkLoginAndRedirect('个人中心')) {
      return;
    }
    this.loadUserData();
  },

  onShow() {
    console.log('个人中心页面显示 - 小程序重新进入前台');
    
    // 检查登录状态，如果已登录则尝试自动登录
    if (isLoggedIn()) {
      console.log('检测到用户已登录，尝试自动登录验证');
      this.performAutoLogin();
    } else {
      console.log('用户未登录，跳转到登录页面');
      wx.redirectTo({ url: '/pages/login/login' });
      return;
    }
  },

  /**
   * 执行自动登录
   */
  performAutoLogin() {
    autoLogin().then((userInfo) => {
      console.log('个人中心自动登录成功，用户信息:', userInfo);
      // 自动登录成功，更新页面数据
      this.loadUserData();
      // 重置后台状态
      setAppResumedFromBackground(false);
      // 重置用户在线开始时间
      setUserOnlineStartTime(Date.now());
    }).catch((error) => {
      console.error('个人中心自动登录失败:', error);
      // 自动登录失败，跳转到登录页面
      wx.redirectTo({ url: '/pages/login/login' });
    });
  },

  // 加载用户数据
  loadUserData() {
    try {
      // 获取用户步数数据
      const userStepData = wx.getStorageSync(STORAGE_KEY_USER_STEP_DATA_MODEL) || {};
      console.log("mine onShow storage step data:", JSON.stringify(userStepData));
      
      // 获取用户信息数据
      const userInfo = wx.getStorageSync(STORAGE_KEY_USER_INFO) || {};
      console.log("mine onShow storage user info:", JSON.stringify(userInfo));
      
      // 如果用户信息为空，则首次请求用户信息
      if (!userInfo.name && !userInfo.userCode) {
        this.getUserInfoFromServer();
      } else {
        // 如果用户信息存在，获取用户头像
        this.getUserAvatar(userInfo.avatarUrl);
      }
      
      // 根据model中的字段名获取数据
      this.setData({
        // 用户信息
        userName: userInfo.name || '',
        userJob: userInfo.userCode || '',
        teamName: userInfo.teamName || '',
        // 步数数据
        currentStep: userStepData.todayPersonStep || 0, // 今日步数
        weekStep: userStepData.weekPersonStep || 0, // 本周步数
        totalStep: userStepData.totalPersonStep || 0 // 总步数
      });
    } catch (e) {
      console.error('loadUserData error:', e);
      // 如果获取失败，设置默认值
      this.setData({
        userName: '',
        userJob: '',
        teamName: '',
        userAvatar: '/assets/avatar.png',
        currentStep: 0,
        weekStep: 0,
        totalStep: 0
      });
    }
  },

  // 从服务器获取用户信息
  getUserInfoFromServer() {
    try {
      const userCode = wx.getStorageSync(STORAGE_KEY_USER_CODE);
      if (!userCode) {
        console.error('userCode not found in storage');
        return;
      }

      wx.request({
        url: `https://oaa00e.top/bjnsWalk/api/user/getUserInfo?userCode=${userCode}`,
        method: 'GET',
        success: (res) => {
          console.log('getUserInfoFromServer result:', res.data);
          if (res.data && res.data.code === 200 && res.data.data) {
            // 解析成UserInfo模型并存储到storage
            const userInfoData = res.data.data;
            const userInfo = {
              id: userInfoData.id,
              token: userInfoData.token,
              avatarUrl: userInfoData.avatarUrl,
              userCode: userInfoData.userCode,
              name: userInfoData.name,
              teamName: userInfoData.teamName,
              clockIn: userInfoData.clockIn,
              medalId: userInfoData.medalId
            };
            
            // 存储到storage
            wx.setStorageSync(STORAGE_KEY_USER_INFO, userInfo);
            console.log('UserInfo saved to storage:', userInfo);
            
            // 更新页面数据
            this.setData({
              userName: userInfo.name || '',
              userJob: userInfo.userCode || '',
              teamName: userInfo.teamName || ''
            });
            
            // 获取用户头像
            this.getUserAvatar(userInfo.avatarUrl);
          } else {
            console.error('getUserInfoFromServer failed:', res.data);
          }
        },
        fail: (err) => {
          console.error('getUserInfoFromServer network error:', err);
        }
      });
    } catch (e) {
      console.error('getUserInfoFromServer error:', e);
    }
  },

  // 获取用户头像
  getUserAvatar(avatarUrl) {
    if (!avatarUrl) {
      console.log('No avatarUrl provided, using default avatar');
      return;
    }

    try {
      // 构建完整的头像URL
      const fullAvatarUrl = `https://bjns-walk-2025.oss-cn-beijing.aliyuncs.com/${avatarUrl}`;
      console.log('Getting user avatar from:', fullAvatarUrl);
      
      // 更新头像URL
      this.setData({
        userAvatar: fullAvatarUrl
      });
    } catch (e) {
      console.error('getUserAvatar error:', e);
      // 如果获取失败，使用默认头像
      this.setData({
        userAvatar: '/assets/avatar.png'
      });
    }
  },

  // 服务项点击处理
  onServiceTap(e) {
    const service = e.currentTarget.dataset.service;
    
    switch (service) {
      case 'rewards':
        wx.showToast({ title: '我的奖品功能开发中', icon: 'none' });
        break;
      case 'medals':
        wx.showToast({ title: '我的勋章功能开发中', icon: 'none' });
        break;
      case 'feedback':
        wx.showToast({ title: '意见反馈功能开发中', icon: 'none' });
        break;
      default:
        break;
    }
  },

  // 退出登录
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          console.log('用户确认退出登录');
          clearLoginInfo();
          wx.reLaunch({ 
            url: '/pages/login/login',
            success: () => {
              console.log('退出登录成功，跳转到登录页面');
            },
            fail: (err) => {
              console.error('跳转登录页面失败:', err);
            }
          });
        }
      }
    });
  }
}); 